import { Injectable } from '@nestjs/common'
import * as os from 'os'

@Injectable()
export class OsService {
  /**
   * 操作系统CPU架构
   */
  get arch(): string {
    return os.arch()
  }

  get constants() {
    return os.constants
  }

  get cpus() {
    return os.cpus()
  }
  /**
   * 空闲系统内存的字节数.
   */
  get freemem() {
    return os.freemem()
  }
  /**
   * 当前用户的home目录
   */
  get homedir() {
    return os.homedir()
  }
  /**
   * 平均负载
   */
  get loadavg() {
    return os.loadavg()
  }
  /**
   * 网络接口
   */
  get networkInterfaces() {
    return os.networkInterfaces()
  }
  /**
   * 操作系统平台
   */
  get platform() {
    return os.platform()
  }
  /**
   * 操作系统的发行版.
   */
  get release() {
    return os.release()
  }
  /**
   * 临时文件目录
   */
  get tmpdir() {
    return os.tmpdir()
  }
  /**
   * 所有系统内存的字节数
   */
  get totalmem() {
    return os.totalmem()
  }
  /**
   * 操作系统的名字
   */
  get type() {
    return os.type()
  }
  /**
   * 操作系统的上线时间
   */
  get uptime() {
    return os.uptime()
  }

  get userInfo() {
    return os.userInfo()
  }

  get EOL() {
    return os.EOL
  }

  get ipv4(): os.NetworkInterfaceInfoIPv4 {
    const networkInterfaces = this.networkInterfaces
    let ipv4: os.NetworkInterfaceInfoIPv4 = {
      family: 'IPv4',
      address: '',
      netmask: '',
      mac: '',
      internal: false
    }
    for (let i = 0; i < networkInterfaces.en0.length; i++) {
      let json = networkInterfaces.en0[i]
      if (json.family === 'IPv4') {
        ipv4 = json
      }
    }
    return ipv4
  }
}
